// js for循环迭代陷阱
// function foo() {
//     var funcs = [];
//     for (var i = 0; i < 3; i++) {
//       funcs.push(function () {
//         console.log("func", i);
//       });
//     }
//     return funcs;
//   }
//   var xs = foo();
//   xs.forEach(x => x());
// 输出3个3

// 输出0 1 2 利用立即执行函数 或者使用let
function foo() {
    var funcs = [];
    for (var i = 0; i < 3; i++) {
        funcs.push((function(value) {
            return function() {
                console.log(value)
            }
        })(i)
        )
    }
    return funcs;
}
var xs = foo();
xs.forEach(x => x());

var i = 10
function aaa () {
    var i       //变量提升
    i = 20
    console.log(i)  //  第1个log 20
    for (i = 0; i < 6; i++) {
        console.log(i)  // 第2个log 0 1 2 3 4 5
    }
    console.log(this.i) // 第3个log 10
    console.log(i) // 第4个log 6
 
}
aaa()
console.log(i) // 第5个log 10复制代码